/*
================================================================================
	Plik: types.h
--------------------------------------------------------------------------------
	Autorzy: Piotr Zdunek, Mateusz Słowikowski, Krzysztof Wiąckowski
	Projekt:Model mikrokontrolera AVR
	Kompilator: avr-gcc-4.3.5
	Doc: doxygen 1.7.4
--------------------------------------------------------------------------------
	Zawiera:
--------------------------------------------------------------------------------
	Komentarze:
================================================================================
*/

/*!\file
 * \brief Biblioteka typów.
 *
 * Biblioteka typów - DataType, CodeType,AdressType,najwiekszych wartosci numerow rejestrow, oraz znaczenia flag. plik types.h
 */

#ifndef __TYPES_H__
#define __TYPES_H__
// -----------------------------------------------------------------------------
// CONSTANTS
// -----------------------------------------------------------------------------

//Numer ostatniego rejestru
#define MAX_REGISTER    		31
#define MAX_ADDRESS				0xFFFF
#define MAX_DATA_VAL    		0xFF
#define PRINT_MEMD_NUMBER 		10
#define PRINT_MEMC_NUMBER 		10
#define SREG_ADDRESS			0x003F
#define LYR						28		//LOW Y REGISTER
#define HYR						29		//HIGH Y REGISTER
#define LZR						30		//Low Z Register
#define HZR						31		//High Z Register
#define BEGIN_REG_MEM_ADDR 		0x0000
#define END_REG_MEM_ADDR 		0x001F
#define BEGIN_IO_MEM_ADDR 		0x0020
#define END_IO_MEM_ADDR 		0x005F
#define BEGIN_INT_SRAM_ADDR 	0x0060
#define END_INT_SRAM_ADDR 		0x0FFF
#define BEGIN_EXT_SRAM_ADDR 	0x1000
#define END_EXT_SRAM_ADDR 		0xFFFF

/**
 * \defgroup maxi Maksymalne wartosci
 * @{
 */

/*! \def MAX_ADDRESS
 *  \brief Maksymalna wartosc adresu.
 *
 *  Maksymalna wartosc adresu okreslona na 0xFFFF.
 */


/*! \def MAX_DATA_VAL
 *  \brief Maksymalna wartosc.
 *
 *  Maksymalna wartosc okreslona na 0xFF.
 */

/*! \def MAX_REGISTER
 *  \brief Numer ostatniego rejestru.
 *
 *  Numer ostatniego rejestru równy 31.
 */

/**@}*/

//Znaczenie flag
#define FLAG_I		7
#define FLAG_T		6
#define FLAG_H		5
#define FLAG_S		4
#define FLAG_V		3
#define FLAG_N		2
#define FLAG_Z		1
#define FLAG_C		0

<<<<<<< .mine
//Znaczenie flag
#define MSB		7
#define BIT_7		6
#define BIT_6		5
#define BIT_5		4
#define BIT_4		3
#define BIT_3		2
#define BIT_2		1
#define LSB		0

=======
/**
 * \defgroup flagi Flagi
 * @{
 */

/*! \def FLAG_I
 *  \brief Definicja flagi I.
 *
 *  Flaga I służy do sygnalizacji przerwania(Global interrupt enable/disable flag).
 */

/*! \def FLAG_T
 *  \brief Definicja flagi T.
 *
 *  Flaga T służy do sygnalizacji transferu bitu, jest używana przez funkcje <b>BLD</b> i <b>BST</b>
 */

/*! \def FLAG_H
 *  \brief Definicja flagi H.
 *
 *  Flaga H to flaga połowy przeniesienia(HALF CARRY FLAG).
 */

/*! \def FLAG_S
 *  \brief Definicja flagi S.
 *
 *  Flaga S to XOR flag N i V.
 */

/*! \def FLAG_V
 *  \brief Definicja flagi V.
 *
 *  Flaga dopełnienia do dwóch(Two's complement overflow flag).
 */

/*! \def FLAG_N
 *  \brief Definicja flagi N.
 *
 *  Flaga zaprzeczenia(NEGATIVE FLAG).
 */

/*! \def FLAG_Z
 *  \brief Definicja flagi Z.
 *
 *  Flaga sygnalizująca zero(ZERO FLAG).
 */

/*! \def FLAG_C
 *  \brief Definicja flagi C.
 *
 *  Flaga sygnalizująca przeniesienie(CARRY FLAG).
 */

/**@}*/

>>>>>>> .r18
// -----------------------------------------------------------------------------
// MACROS
// -----------------------------------------------------------------------------
#define DEBUG(x) printf("\nDEBUG %d\n",x);
#define REP(i,n) for(i = 0; i < n; i++)
#define SHOW_PC	printf("0x%04x: 0x%04x\n", getPC(), T);
#define PRINT_HEX(x) printf("0x%04x\n",x);
// -----------------------------------------------------------------------------
// GLOBAL TYPES
// -----------------------------------------------------------------------------
typedef unsigned char		uint8_t;			//0 - 255
typedef unsigned short		uint16_t;		//0 - 65K
typedef char				int8_t;			//-64 - +64


/**
 * \defgroup typy Nowe typy danych
 * @{
 */

/*! \typedef unsigned short uint16_t
 *  \brief szesnastobitowy typ danych o wartosciach od 0 do 65k.
 *
 */

/*! \typedef unsigned char uint8_t
 *  \brief osmiobitowy typ danych o wartosciach od 0 do 255.
 *
 */

/*! \typedef char int8_t
 *  \brief osmiobitowy typ danych o wartosciach od -64 do 64.
 *
 */

/**@}*/


#endif //__TYPES_H__
